//package com.fpf.handler;
//
//import com.fpf.client.DeepSeekClient;
//import com.fpf.domain.GetAnswerDTO;
//import com.fpf.service.IWindowTextService;
//import com.gcxy.common.config.result.R;
//import org.springframework.web.socket.TextMessage;
//import org.springframework.web.socket.WebSocketSession;
//import org.springframework.web.socket.handler.TextWebSocketHandler;
//
//import java.io.IOException;
//import java.util.concurrent.CompletableFuture;
//
//public class MyWebSocketHandler extends TextWebSocketHandler {
//
//    private final IWindowTextService windowTextService; // 通过构造函数注入
//
//    public MyWebSocketHandler(IWindowTextService windowTextService) {
//        this.windowTextService = windowTextService;
//    }
//
//
//    @Override
//    public void afterConnectionEstablished(WebSocketSession session) {
//        System.out.println("客户端连接: " + session.getId());
//    }
//
//    @Override
//    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
//        String payload = message.getPayload();  // 接收客户端消息
//        System.out.println("收到消息，立即返回，开始异步处理: " + payload);
//
//        GetAnswerDTO dto = new GetAnswerDTO();
//        dto.setWindowContent(payload);
//
//        // 调用异步方法，立即获得一个 "Future"
//        CompletableFuture<R> futureResult = windowTextService.getAnswer(dto);
//
//        //对future的结果进行处理（非阻塞）
//        futureResult.thenAccept(result -> {
//            // ----- 这部分代码将在AI返回结果后执行 -----
//            //将成功结果发给客户端
//            String aiReply = result.getData().toString();
//            try {
//                session.sendMessage(new TextMessage(aiReply));
//            } catch (IOException e) {
//                throw new RuntimeException(e);
//            }
//        }).exceptionally(ex -> {
//            // ----- 这部分代码将在AI调用发生异常时执行 -----
//            try {
//                // 发送错误信息给客户端
//                session.sendMessage(new TextMessage("抱歉，机器人出错了：" + ex.getMessage()));
//            } catch (IOException e) {
//                // 处理发送消息时的异常
//                throw new RuntimeException("Failed to send error WebSocket message", e);
//            }
//            return null; // exceptionally 需要一个返回值
//        });
//
//
////        session.sendMessage(new TextMessage("服务器回复: " + payload));  // 发送消息给客户端
//    }
//
//    @Override
//    public void afterConnectionClosed(WebSocketSession session, org.springframework.web.socket.CloseStatus status) {
//        System.out.println("客户端断开: " + session.getId());
//    }
//}
